<?php
define ( 'IS_POST', ($_SERVER ['REQUEST_METHOD'] == 'POST') );
define ( 'IS_AJAX', (isset ( $_REQUEST ['ajax'] ) && ! empty ( $_REQUEST ['ajax'] ) ) );
// error_reporting(E_ALL ^ E_NOTICE);
// 加载Sparrow

// 添加自定义库
// Lib::add('babyblog', HOME . 'include/library/');

// 使用模板引擎
// import('sparrow.template');
// import('sparrow.mysql');
// import('sparrow.rewrite');
// import('sparrow.session');
// import('sparrow.cache');

// 加载应用配置
// load_app_config();
class BaseController extends spController {
	public function __construct() {
		parent::__construct ();
		// TODO session控制
		import ( 'library/mysession.php' );
		session ()->start ();
	}
	protected function assign($key, $value) {
		$this->v->engine->assign ( $key, $value );
	}
	protected function display_json($variable){
		if($rst = json_encode($variable)){
			echo $rst;
		}else{
			echo json_encode(array('error'=>'无法输出json格式数据'));
		}
	}
	/**
	 * override parent
	 *
	 * @see spController::error()
	 */
	function error($msg, $url) {
		parent::error ( $msg, $url );
	}
	/**
	 * override parent
	 *
	 * @see spController::jump()
	 */
	function jump($url, $delay) {
		parent::jump ( $url, $delay );
	}

	
	/**
	 * 检查数据的合法性
	 *
	 * @return boolean
	 */
	// protected function _check_post($args) {
	// if (is_array ( $args )) {
	
	// if (function_exists ( 'array_walk_recursive' )) {
	// array_walk_recursive ( $args, array($this,'_check_post') );
	// } else {
	// $args = array_values ( $args );
	// return array_walk ( $args, array($this,'_check_post') );
	// }
	// } elseif (is_string ( $args ) || is_numeric($args) ) {
	
	// if (isset( $_REQUEST[$args] ) && is_null( $_REQUEST[$args] ) ||
	// $_REQUEST[$args] != addslashes ( $_REQUEST[$args] )) {
	// // if (is_null ( $args ) || $args != addslashes ( $args )) {
	// return FALSE;
	// } else {
	// return TRUE;
	// }
	// } else {
	
	// return FALSE;
	// }
	// }
	protected function _check_post($args) {
		
		// if (is_array ( $args )) {
		// foreach ( $args as $one_value ) {
		// if (false == $this->_check_post ( $args ))
		// return false;
		// break;
		// }
		// } elseif (is_string ( $args )) {
		// if (isset ( $_REQUEST [$args] ) && is_null ( $_REQUEST [$args] ) ||
		// $_REQUEST [$args] != addslashes ( $_REQUEST [$args] )) {
		// if (is_null ( $args ) || $args != addslashes ( $args ))
		// return FALSE;
		// }
		// }
		return true;
	}
	/**
	 */
	protected function _get_post_data() {
	}
}

/**
 *
 * @author silenus
 *        
 */
class spAjax {
	/**
	 * 在内存中保存的变量
	 */
	private $_ajax = null;
	
	/**
	 * 构造函数
	 */
	public function __construct() {
		$this->_ajax = $_REQUEST;
	}
	
	/**
	 * 获取应用程序请求变量值，同时也可以指定获取的变量所属。
	 *
	 * @param
	 *        	name 获取的变量名称，如果为<b>空</b>，则<b>返回全部的请求变量</b>
	 * @param
	 *        	type 指定类型,则会对请求值进行相应处理
	 * @param
	 *        	default 当前获取的变量不存在的时候，将返回的默认值
	 */
	public function get($name = null, $default = FALSE, $type = NULL) {
		if (null != $name) {
			if ($this->has ( $name )) {
				if (null != $type) { //
					switch (strtolower ( $type )) {
						case 'json' :
							return json_decode ( $this->_ajax [$name], TRUE ); // 解析json失败则返回false
							break;
						case 'xml' :
							return FALSE;
							break;
					}
				}
				return $this->_ajax [$name];
			} else {
				return (FALSE === $default) ? FALSE : $default;
			}
		} else {
			return $this->_ajax;
		}
	}
	
	/**
	 * 设置（增加）环境变量值，该名称将覆盖原来的环境变量名称
	 *
	 * @param
	 *        	name 环境变量名称
	 * @param
	 *        	value 环境变量值
	 */
	public function set($name, $value) {
		$this->_ajax [$name] = $value;
	}
	
	/**
	 * 检测是否存在某值
	 *
	 * @param
	 *        	name 待检测的环境变量名称
	 */
	public function has($name) {
		return isset ( $this->_ajax [$name] );
	}
	
	/**
	 * 构造输入函数，标准用法
	 *
	 * @param
	 *        	args 环境变量名称的参数
	 */
	public function __input($args = -1) {
		if (- 1 == $args)
			return $this;
		@list ( $name, $default, $type ) = $args;
		return $this->get ( $name, $default, $type );
	}
}
/**
 */
// class BabyExceptionHandler extends SparrowExceptionHandler
// {
// public function handleErrorException($e)
// {
// parent::handleErrorException($e);
// file_put_contents(HOME . 'data/log/error.log', $e->__toString() . "\r\n",
// FILE_APPEND);
// }
// }
function load_app_config() {
	$config = include (HOME . 'config.db.php');
	foreach ( $config as $key => $value ) {
		define ( $key, $value );
	}
}

// function lang($key = null)
// {
// return Lang::get($key);
// }
/**
 * 格式化时间
 *
 * @return string
 */
function format_date($timestamp) {
	return date ( 'Y-m-d H:i', $timestamp + 3600 * 8 );
}

// function render_post($post_contents)
// {
// $post_contents = preg_replace('/\[code\](.*?)\[\/code\]/is', '<div
// class="code_view"><textarea>\1</textarea><input type="button"
// class="run_button" value="运行代码" /><input type="button" id="copy_button"
// class="copy_button" value="复制代码" /></div>', $post_contents);
// return $post_contents;
// }

// function get_post_ids($post)
// {
// $return = null;
// if (is_array($post))
// {
// $return = filter('intval', $post, true);
// }
// else
// {
// $return = intval($post);
// }

// return $return;
// }

// function file_url($save_url)
// {
// return 'data/upload/' . $save_url;
// }
// function from_mobile()
// {
// return ((strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false) ||
// (strpos($_SERVER['HTTP_USER_AGENT'], 'android') !== false));
// }

?>
